В этом упражнении вы настроите приоритет запуска процессов с помощью команд nice и renice и увидите, как изменения повлияют на выполнение процессов.
Результаты
Вы сможете настроить приоритет запуска процессов.
Войдите на workstation как пользователь student с паролем student.
workstation
student
На workstation выполните команду lab tuning-procscheduling start. Эта команда запускает подготовительный сценарий, который проверяет доступность хоста servera в сети.
servera
[student@workstation ~]$ lab tuning-procscheduling start
[student@workstation ~]$
lab tuning-procscheduling start
На workstation с помощью SSH войдите на хост servera как пользователь student. Системы настроены на использование ключей SSH для аутентификации, поэтому пароль не требуется.
[student@workstation ~]$ ssh student@servera ...output omitted... [student@servera ~]$
ssh student@servera
[student@servera ~]$
Определите количество ядер ЦП на servera, а затем запустите два экземпляра команды sha1sum /dev/zero & для каждого ядра.
Выполните команду grep, чтобы получить количество имеющихся виртуальных процессоров (ядер ЦП) из файла /proc/cpuinfo.
/proc/cpuinfo
[student@servera ~]$ grep -c '^processor' /proc/cpuinfo 2
grep -c '^processor' /proc/cpuinfo
Используйте команду цикла, чтобы запустить несколько экземпляров команды sha1sum /dev/zero &. Запустите по два экземпляра для каждого виртуального процессора, обнаруженного на предыдущем шаге. В данном примере это будут четыре экземпляра. Значения идентификаторов процессов (PID) в вашем выводе будут отличаться от показанных.
[student@servera ~]$ for i in $(seq 1 4); do sha1sum /dev/zero & done [1] 2643 [2] 2644 [3] 2645 [4] 2646
for i in $(seq 1 4); do sha1sum /dev/zero & done
Убедитесь, что для каждого процесса sha1sum выполняются фоновые задания.
sha1sum
[student@servera ~]$ jobs [1] Running sha1sum /dev/zero & [2] Running sha1sum /dev/zero & [3]- Running sha1sum /dev/zero & [4]+ Running sha1sum /dev/zero &
jobs
Running
Используйте команды ps и pgrep для отображения процента использования ЦП каждым процессом sha1sum.
[student@servera ~]$ ps u $(pgrep sha1sum) USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND student 2643 49.8 0.0 228360 1744 pts/0 R 11:15 6:09 sha1sum /dev/zero student 2644 49.8 0.0 228360 1780 pts/0 R 11:15 6:09 sha1sum /dev/zero student 2645 49.8 0.0 228360 1748 pts/0 R 11:15 6:09 sha1sum /dev/zero student 2646 49.8 0.0 228360 1780 pts/0 R 11:15 6:09 sha1sum /dev/zero
ps u $(pgrep sha1sum)
49.8
Завершите все процессы sha1sum и убедитесь, что не осталось выполняющихся заданий.
Используйте команду pkill, чтобы завершить все запущенные процессы sha1sum.
[student@servera ~]$ pkill sha1sum [2] Terminated sha1sum /dev/zero [4]+ Terminated sha1sum /dev/zero [1]- Terminated sha1sum /dev/zero [3]+ Terminated sha1sum /dev/zero
pkill sha1sum
Terminated
Убедитесь, что нет выполняющихся заданий.
[student@servera ~]$ jobs [student@servera ~]$
Запустите несколько экземпляров команды sha1sum /dev/zero &, а затем запустите еще один экземпляр sha1sum /dev/zero & с фактором уступчивости 10. Запустите столько экземпляров, сколько в системе виртуальных процессоров. В этом примере запускаются три обычных экземпляра, а также еще один экземпляр с более высоким фактором уступчивости.
Используйте цикл, чтобы запустить три экземпляра команды sha1sum /dev/zero &.
[student@servera ~]$ for i in $(seq 1 3); do sha1sum /dev/zero & done [1] 1947 [2] 1948 [3] 1949
for i in $(seq 1 3); do sha1sum /dev/zero & done
Используйте команду nice для запуска четвертого экземпляра с фактором уступчивости 10.
[student@servera ~]$ nice -n 10 sha1sum /dev/zero & [4] 1953
nice -n 10 sha1sum /dev/zero &
Используйте команды ps и pgrep для отображения PID, процента использования ЦП, фактора уступчивости и имени исполняемой команды каждого процесса. Для экземпляра с фактором уступчивости 10 должен быть показан более низкий процент использования ЦП, чем для других экземпляров.
[student@servera ~]$ ps -o pid,pcpu,nice,comm $(pgrep sha1sum) PID %CPU NI COMMAND 1947 66.0 0 sha1sum 1948 65.7 0 sha1sum 1949 66.1 0 sha1sum 1953 6.7 10 sha1sum
ps -o pid,pcpu,nice,comm $(pgrep sha1sum)
1953 6.7 10 sha1sum
Выполните команду sudo renice, чтобы понизить фактор уступчивости процесса с предыдущего шага. Обратите внимание на значение PID у экземпляра процесса с фактором уступчивости 10. Понизьте фактор уступчивости процесса с этим PID до 5.
[student@servera ~]$ sudo renice -n 5 1953 [sudo] password for student: student 1953 (process ID) old priority 10, new priority 5
sudo renice -n 5 1953
1953
[sudo] password for student:
new priority 5
Повторите команды ps и pgrep, чтобы снова отобразить процент использования ЦП и фактор уступчивости.
[student@servera ~]$ ps -o pid,pcpu,nice,comm $(pgrep sha1sum) PID %CPU NI COMMAND 1947 63.8 0 sha1sum 1948 62.8 0 sha1sum 1949 65.3 0 sha1sum 1953 9.1 5 sha1sum
1953 9.1 5 sha1sum
[student@servera ~]$ pkill sha1sum ...output omitted...
Выйдите с servera.
[student@servera ~]$ exit logout Connection to servera closed. [student@workstation ~]$
exit
Конец
На workstation запустите сценарий lab tuning-procscheduling finish, чтобы закончить упражнение.
[student@workstation ~]$ lab tuning-procscheduling finish
lab tuning-procscheduling finish
Упражнение завершено.